<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    let arr = [1, 2, 3, 4, 5]
    // 1.forEach 改变原数组
    arr.forEach((item, i, arr) => {
      // console.log('index:' + i + ',item:' + item);
      arr[i] = item * 2
    })
    console.log(arr);

    /* 不支持 continue，用 return false 或 return true 代替。
      不支持 break，用 try catch/every/some 代替： */
    // 实现continue(结束本次循环)
    var arr1 = [1, 2, 3, 4, 5];
    var num = 3;
    arr1.some(function (v) {
      if (v == num) {
        return;  // 
      }
      console.log(v);
    });
    // 实现break
    arr1.every(function (v) {
      if (v == num) {
        return false;
      } else {
        console.log(v);
        return true;
      }
    });

    // 2.map 返回新数组
    let newArr = arr.map(item => {
      return item * 2 //返回值就是每项的值
    })
    console.log(newArr);

    // 3.filter 返回新数组
    let newArr1 = arr.filter(item => {
      //对每一项进行判断，为true则放入新数组
      return item < 5
    })
    console.log(newArr1);

    // 4. some 返回布尔值 有一项满足则返回true
    let bol = arr.some(item => {
      return item > 6
    })
    console.log(bol);

    // 5. every 返回布尔值 每一项满足返回true
    let bol1 = arr.every(item => {
      return item > 6
    })
    console.log(bol1);

    // 6. for...of方法
    let arr3 = [1, 2, 3, 4, 5]
    // for (let v of arr3) {
    //   console.log(v);
    // }
    for (let [i, v] of arr3.entries()) {
      console.log(i, v);
    }

    // 7. for...in
    for (let i in arr3) {
      // console.log(i);
      console.log(i, arr3[i]);
    }

  </script>
</body>

</html>